// 期望输出: [1,2,3]

// A
function foo1(x) {
    console.log(arguments);
    return x;
}

foo1(1,2,3);

// [Arguments] { '0': 1, '1': 2, '2': 3 }
// Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]

// B
function foo2(x) {
    console.log(arguments);
    return x;
}(1,2,3);

// 函数不执行， 不报错, 无输出


// C
(function foo3(x) {
    console.log(arguments);
    return x;
})(1,2,3)

// 立即执行函数
// [Arguments] { '0': 1, '1': 2, '2': 3 }

// D

function foo4() {
    bar.apply(null, arguments);
}
function bar() {
    console.log(arguments);
}
foo4(1,2,3)

// [Arguments] { '0': 1, '1': 2, '2': 3 }

